Computer systems are being used today to perform a wide variety of tasks. Many different areas of business, industry, government, education, entertainment, and most recently, the home, are tapping into the enormous and rapidly growing list of applications developed for today's increasingly powerful computer devices.
Software applications have also become a key technology for communicating ideas, data, and trends in most areas of commerce, science, and education. Many computer systems are configured to interact with users through graphical user interfaces (GUIs) that support real time user interaction, three dimensional (3D) interactive images, visual representations of real-world system status, and the like. A primary user interface with a typical computer system is generally implemented through the computer system's operating system.
A computer operating system, or operating environment, comprises a primary mechanism through which computers implement their functionality (e.g., GUI, access to user applications, etc.). An operating system typically refers to a “master control program” that runs the computer system. The operating system is typically the first program loaded when the computer is turned on. In general, the main portion of the operating system, the “kernel,” resides in memory at all times. The operating system sets the standards for all application programs that run in the computer. The applications “talk to” the operating system for all user interface and file management operations. Also called an “executive” or “supervisor,” a computer operating system insures the multitasking functionality, whereby multiple programs are executed within the computer system at the same time. The number of programs that can be effectively multitasked depends on the type of multitasking performed (preemptive vs. cooperative), CPU speed and memory and disk capacity.
Operating systems are generally configured for operation with the particular hardware platform provided by the computer system in which they are installed. The capability of the computer system largely determines the capability and functionality of the applications an operating system can support, and the overall capability and functionality of the operating environment.
Accordingly, different machines tend to have different operating environments. For example, one machine may be equipped with multiple hard disk drives, where as a similar, otherwise identical machine may be equipped with only a single removable hard disk drive.
A problem exist in those situations where it is desirable to implement portability with respect to the operating environment. Generally, it is not uncommon to have removable storage connected to a computer system to allow portability of data. For example, a user may configure a computer system to store his application data on a removable disk drive. When the user changes locations, the user can remove the disk drive and insert the disk drive at the new machine at the new location.
However, portability is not as easily attained with respect to the operating environment. A primary reason for this is the fact that the underlying hardware platform of two given computer systems can be very much different from one another. One machine, because of different hardware configurations, different network addresses, different peripheral devices, can be incompatible with a operating environment copied from another machine (e.g., via a removable disk drive).
One reason for the incompatibility with respect to operating environments is the different system environment of the machine's device drivers. A device driver typically refers to a program routine that links a peripheral device to the operating system. It is written by programmers who understand the detailed knowledge of the device's command language and characteristics. It contains the precise machine language necessary to perform the functions requested by the application. When a new hardware device is added to the computer, such as a display adapter, its driver must be accessed by the operating system in order to use it. The operating system calls the driver, and the driver “drives” the device. Routines that perform internal functions, such as memory managers and disk caches also require drivers. The unique combination of device drivers is usually accounted for when an operating system is first installed on the machine. Thus, subsequent, ported-over operating systems which may be accessed, for example, via a portable disk drive, would not be able to boot properly in the new machine.
Hardware differences are often not the only reason a portable operating system will have compatibility problems. There may be software based incompatibilities also. One such example is the fact that the newly arrived portable operating system would have no knowledge of the network configuration of the computer system. The new operating system would not know, for example, gateway addresses, IP addresses, domain names, workgroup names, and the like, required for functioning in the network environment.
One prior art solution to implement a degree of portability utilizes a cloning scheme, wherein a clone or an image of a particular instance of an operating system environment is transported onto a similar computer system using removable storage media. However the solution has a significant drawback in that the cloned operating system environment requires its configuration to be changed, or customized, to function in the new hardware environment of the new machine. This typically requires numerous changes to numerous system files, and even then, may not be successful.
Thus what is required is a solution that implements portability of an operating environment. What is required is a solution that allows an operating environment to be transferred to removable storage, transported to a new machine, and booted to the new machine in a seamless manner, taking into account any hardware or software particularities of the new machine. The present invention provides a novel solution to these requirements.